1. Field
The present disclosure includes methods and apparatus for the definition and the encoding of a specific class of forward error correcting (FEC) codes known as low-density parity-check (LDPC) codes.
2. Related Art
LDPC codes were invented by Gallager in 1961. The first graphical descriptions of forward error correcting codes were presented by Tanner in 1981. These descriptions became known as Tanner graphs. LDPC codes can be described with Tanner graphs. Tanner graphs can possess three distinct types of ‘nodes’: transmitted variable node, non-transmitted (or punctured) variable nodes, and constraint nodes. The remaining graph structure is defined by ‘edges’ that connect these three types of nodes together to form the final description of the code. Sub-structures whose replication ultimately defines the overall LDPC code are called ‘protographs’. A protograph is a Tanner graph with a relatively small number of nodes.
As a simple example, the protograph shown in FIG. 1 can be considered. This graph consists of 3 variable nodes and 2 check nodes, connected by 5 edges.
A check or constraint node defines a parity check operation. In particular, a variable node pattern (a particular sequence of ones and zeros) is a codeword if and only if the modulo-2 sum of the edges impinging each check node is zero. The numbers in the figure enumerate the variable and check nodes.
A larger graph can be obtained by a ‘copy-and-permute’ operation as shown in FIG. 1. This operation consists of first making T copies of the protograph, and then permuting the endpoints of each edge among the T variable and T check nodes connected to the set of T edges copied from the same edge in the protograph. The derived graph is the graph of a code T times as large as the code corresponding to the protograph, with the same rate and the same distribution of variable and check node degrees.
A first type of prior art structure is embodied by the repeat-accumulate or RA code. In addition to being very simple, RA codes also have reasonably good performance.
In the remainder of the present disclosure, the performance of protograph codes will often be measured in terms of their ‘asymptotic threshold’ or simply ‘threshold’. This threshold with be expressed in terms of a single signal-to-noise ratio (SNR). The threshold SNR of a protograph is the SNR for which it is possible for a code described by a set of infinite replications of the protograph to communicate with arbitrarily low error rate. In practice, infinite replication (parameter T) is not necessary for a code to achieve performance that approaches the threshold of the protograph. Therefore, threshold can be used as a practical comparative predictive measure of performance between codes that are based on differing protographs.
Threshold is equally often described in terms of an absolute SNR or in terms of a relative SNR gap to ‘channel capacity’. Channel capacity was defined by Shannon in 1948 are for a given channel description and desired ‘rate’ of transmission defines the lowest possible SNR for which any code can provide reliable error-free communication. In the context of the present disclosure, the term ‘rate’ describes the fraction of a transmission that bears information.
The aforementioned RA codes achieve thresholds that are within 1 dB of capacity for rates less than or equal to ⅓. In other words, ⅓ of the transmission relays information and ⅔ relays a redundant description of the information. In the context of protograph codes, the redundant description is expressed in terms of ‘parity’ bits which are formed by simply linear combinations of information bits.
RA codes employ a fixed repetition of the input bits. As a simple example, the rate-⅓ Repeat-Accumulate (RA) code depicted in FIG. 2 can be considered. For this code the minimum Eb/No (SNR expressed in terms of energy per information bit) threshold with iterative decoding is 0.502 dB. This code has a protograph representation shown in FIG. 3, as long as the interleaver n is chosen to be decomposable into permutations along each edge of the protograph. Such an assumption is made for all interleavers (permutations) depicted in the figures of the present disclosure. The iterative decoding threshold is unchanged despite this constraint imposed by the protograph. The protograph consists of 4 variable nodes (3 transmitted and 1 punctured) and 3 check nodes, connected by 9 edges. Three variable nodes are connected to the channel and are shown as dark filled circles. One variable node is not connected to the channel (i.e., it is punctured) and is depicted by a blank circle. The three check nodes are depicted by circles with a plus sign inside.
Jin et al (H. Jin, A. Khandekar, and R. McEliece, “Irregular repeat-accumulate codes,” in Proc. 2nd International Symposium on Turbo Codes, pp. 1-8, 2000) generalized the notion of RA codes by allowing irregular repetition of the input bits. An Irregular RA (IRA) code can be viewed as a serial concatenation of a simple low density generator matrix (LDGM) code with different degree variable nodes (irregular repetition) as an outer code, and an accumulator as an inner code. The encoder can be implemented by repetition codes, exclusive-OR's, and an accumulator as shown in FIG. 4.
A rate-½ classical RA code with a repetition-2 outer code has a high iterative decoding threshold of 3.01 dB. A much lower threshold of 1.116 dB was obtained by Abbasfar et al. (A. Abbasfar, D. Divsalar, and K. Yao, “Accumulate Repeat Accumulate Codes,” ISIT 2004 and Globecom 2004, incorporated herein by reference in its entirety) for a rate-½ code using a modified RA construction as shown in FIG. 5. Here the outer code has repetition 3 or 4, the systematic bits are transmitted, and the accumulator code is punctured to make the overall rate ½. With suitable definitions of the interleaver π, the systematic punctured RA code can be represented by various protographs that yield the same threshold, as illustrated in FIGS. 6 and 7. The protograph of FIG. 7 can be modified to realize protographs such as those shown in FIG. 10, a possible encoder for which is shown in FIG. 9. Puncturing an accumulator means that the output stream from the accumulator has certain nodes not transmitted. For instance, the pattern 00X implies that, in a repeating period-3 pattern, the first two bits are not transmitted and the last bit is passed through the channel.
For Irregular.-Repeat-Accumulate (IRA) codes the node degree distribution can be optimized to achieve low thresholds. However, to achieve a very low threshold, the maximum repetition for some portion of the input bits can be very high. Similar requirements on the maximum variable node degree were noted for a general (non-protograph based) irregular LDPC codes (T. Richardson, A. Shokrollahi, and R. Urbanke, “Design of capacity approaching irregular low-density parity-check codes,” IEEE Trans. Inform. Theory, vol. 47, pp. 619-637, 2001) to achieve very low thresholds.